home *** CD-ROM | disk | FTP | other *** search
- /**
- Requires
- Iterator.js
- query_string.js
-
- Common use:
-
- var list = new_list();
- list_add(list, "command");
- list_add(list, "session");
-
- for (var iterator=list_iterator(list); iterator_has_next(iterator); )
- {
- var value = iterator_next(iterator);
- alert(value);
- }
- */
-
- var DATA_TYPE = 0;
- var LIST_DATA = 1;
-
- function new_list()
- {
- var list = new Array();
- list[DATA_TYPE] = "list";
- list[LIST_DATA] = new Array();
- return list;
- }
-
- function list_add(list, value)
- {
- if (list_assert(list, "list_add"))
- {
- var data = list[LIST_DATA];
- data[data.length] = value;
- }
- }
-
- function list_get(list, index)
- {
- if (list_assert(list, "list_get"))
- {
- var data = list[LIST_DATA];
- return data[index];
- }
- return null;
- }
-
- function list_set(list, index, value)
- {
- if (list_assert(list, "list_set"))
- {
- var data = list[LIST_DATA];
- data[index] = value;
- }
- }
-
- function list_remove(list, index)
- {
- var data = list[LIST_DATA];
- var new_data = new Array();
- for (var x=0; x<index; x++) {
- new_data[new_data.length] = data[x];
- }
- for (var x=index+1; x<data.length; x++) {
- new_data[new_data.length] = data[x];
- }
- list[LIST_DATA] = new_data;
- }
-
- function list_iterator(list)
- {
- iterator = new_iterator();
- iterator_add_array(iterator, list[LIST_DATA]);
- return iterator;
- }
-
- function list_size(list)
- {
- return list[LIST_DATA].length;
- }
-
- function list_encode(list)
- {
- if (list_assert(list, "list_encode"))
- {
- var encoded_list = "";
- for (var i=list_iterator(list); iterator_has_next(i); ) {
- var data = iterator_next(i);
- encoded_list += query_encode(data) + "&";
- }
- return encoded_list;
- }
- }
-
- function list_decode(list_string)
- {
- var list = new_list();
- var delimiter = "&";
-
- var start_pos = 0;
- for (var pos=list_string.indexOf(delimiter); pos!=-1; pos=list_string.indexOf(delimiter, pos+delimiter.length))
- {
- list_add(list, query_decode(list_string.substring(start_pos, pos)));
- start_pos = pos+delimiter.length;
- }
- return list;
- }
-
- function list_assert(list, functionName)
- {
- var bad = false;
- if (list == null)
- {
- alert("You did not pass a list to " + functionName + " causing an error...");
-
- var tmp = null;
- alert(tmp.length); // cause an error
- }
-
- return !bad;
- }
-
- function is_list(obj)
- {
- if (obj != null) {
- if (typeof(obj) == "object")
- {
- if (obj[DATA_TYPE] == "list") {
- return true;
- }
- }
- }
- return false;
- }
-
-